﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class designacion_form : System.Web.UI.Page
{
    string cadenaError = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if ((Academia.Entidades.Usuario.RolUsuario)Session["rol"] !=
                    Academia.Entidades.Usuario.RolUsuario.Administrador)
            {
                Page.Response.Redirect("MenuAlumno.aspx");
            }
        }

        catch
        {
            Page.Response.Redirect("Login.aspx");
        }

        if (!Page.IsPostBack)
        {
            cargarDiasCalendario();

            if (Request.QueryString["idDesignacion"] == null)
            {
                this.tipoOp.Value = "alta";
                this.lblTitulo.Text = "Agregar Designación";
                this.btnGuardar.Text = "Agregar";
            }

            else
            {
                Academia.Entidades.Designacion designacion = new Academia.Negocio.Designaciones().RecuperarUno(int.Parse(Request.QueryString["idDesignacion"]))[0];
                this.ddlCargo.SelectedValue = designacion.cargo.IdCargo.ToString();
                this.ddlMateria.SelectedValue = designacion.materia.IdMateria.ToString();
                this.ddlProfesor.SelectedValue = designacion.profesor.Legajo.ToString();
                this.ddlDiaFechaInicio.SelectedIndex = Convert.ToDateTime(designacion.FechaInicio).Day - 1;
                this.ddlMesFechaInicio.SelectedIndex = Convert.ToDateTime(designacion.FechaInicio).Month - 1;
                this.txtAñoInicio.Text = Convert.ToDateTime(designacion.FechaInicio).Year.ToString();
                if (!(designacion.FechaFin.ToShortDateString().Equals("01/01/0001")))
                {
                    this.ddlDiaFechaFin.SelectedIndex = Convert.ToDateTime(designacion.FechaFin).Day;
                    this.ddlMesFechaFin.SelectedIndex = Convert.ToDateTime(designacion.FechaFin).Month;
                    this.txtAñoFin.Text = Convert.ToDateTime(designacion.FechaFin).Year.ToString();
                }

                this.tipoOp.Value = "modificacion";
                this.lblTitulo.Text = "Modificar Designación";
                this.btnGuardar.Text = "Modificar";
            }
        }
    }

    private void cargarDiasCalendario()
    {
        this.ddlDiaFechaFin.Items.Add("");
        //Cargar en el combo los items correspondientes a los días
        //(del 1 al 31)
        for (int i = 1; i <= 31; i++)
        {
            if (i < 10)
            {
                this.ddlDiaFechaInicio.Items.Add("0" + i.ToString());
                this.ddlDiaFechaFin.Items.Add("0" + i.ToString());
            }
            else
            {
                this.ddlDiaFechaInicio.Items.Add(i.ToString());
                this.ddlDiaFechaFin.Items.Add(i.ToString());
            }
        }
    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (designacionValida())
        {
            Academia.Entidades.Designacion oDesignacion = new Academia.Entidades.Designacion();
            oDesignacion.cargo = new Academia.Negocio.Cargos().RecuperarUno(int.Parse(this.ddlCargo.SelectedValue))[0];
            oDesignacion.materia = new Academia.Negocio.Materias().RecuperarUno(int.Parse(this.ddlMateria.SelectedValue))[0];
            oDesignacion.profesor = new Academia.Negocio.Profesores().RecuperarUno(int.Parse(this.ddlProfesor.SelectedValue))[0];
            oDesignacion.FechaInicio = new DateTime(int.Parse(this.txtAñoInicio.Text),
                                             this.ddlMesFechaInicio.SelectedIndex + 1,
                                             this.ddlDiaFechaInicio.SelectedIndex + 1);
            
            if (!(this.ddlDiaFechaFin.SelectedValue.Equals("") &&
                this.ddlMesFechaFin.SelectedValue.Equals("") &&
                this.txtAñoFin.Text.Equals("")))
            {
                oDesignacion.FechaFin = new DateTime(int.Parse(this.txtAñoFin.Text),
                                                       this.ddlMesFechaFin.SelectedIndex,
                                                       this.ddlDiaFechaFin.SelectedIndex);
            }

            if (this.tipoOp.Value == "alta")
            {
                new Academia.Negocio.Designaciones().Agregar(oDesignacion);
                Page.Response.Redirect("abm_designaciones.aspx?exito=1&op=alta");
            }
            else
            {
                int idDesignacion = int.Parse(Request.QueryString["idDesignacion"]);
                oDesignacion.IdDesignacion = idDesignacion;
                new Academia.Negocio.Designaciones().Modificar(oDesignacion);
                Page.Response.Redirect("abm_designaciones.aspx?exito=1&op=modif");
            }
       
        }
        else
        {
            HtmlGenericControl body = this.Master.FindControl("bodytag") as HtmlGenericControl;
            body.Attributes.Add("onLoad", "alert('" + this.cadenaError + "');");
        }

    }

    private bool designacionValida()
    {
        bool valido = true;
        bool fechaFinValida = false;
        bool sinFechaFin = (this.ddlDiaFechaFin.SelectedValue.Equals("") &&
                            this.ddlMesFechaFin.SelectedValue.Equals("") &&
                            this.txtAñoFin.Text.Equals(""));
        if (!sinFechaFin)
        {
            fechaFinValida = Academia.Utilidades.Validaciones.validarFecha(int.Parse(this.txtAñoFin.Text),
                                  this.ddlMesFechaFin.SelectedIndex, this.ddlDiaFechaFin.SelectedIndex);
        }

        if (!Academia.Utilidades.Validaciones.validarAño(this.txtAñoInicio.Text))
        {
            valido = false;
            this.txtAñoInicio.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "El año de Inicio ingresado está fuera del rango permitido" + "\\n";
        }
        else
        {
            this.txtAñoInicio.BackColor = System.Drawing.Color.White;
        }

        if (!(fechaFinValida || sinFechaFin))
        {
            valido = false;
            this.ddlDiaFechaFin.BackColor = System.Drawing.Color.Red;
            this.ddlMesFechaFin.BackColor = System.Drawing.Color.Red;
            this.txtAñoFin.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "La fecha de fin ingresada tiene formato incorrecto" + "\\n";
        }
        else
        {
            this.ddlDiaFechaFin.BackColor = System.Drawing.Color.White;
            this.ddlMesFechaFin.BackColor = System.Drawing.Color.White;
            this.txtAñoFin.BackColor = System.Drawing.Color.White;
        }

        try
        {
            valido = Academia.Utilidades.Validaciones.validarFecha(int.Parse(this.txtAñoInicio.Text),
            this.ddlMesFechaInicio.SelectedIndex + 1, this.ddlDiaFechaInicio.SelectedIndex + 1);
        }
        catch
        {
            valido = false;
        }

        if (valido)
        {
            this.ddlDiaFechaInicio.BackColor = System.Drawing.Color.White;
            this.ddlMesFechaInicio.BackColor = System.Drawing.Color.White;
        }
        else
        {
            this.ddlDiaFechaInicio.BackColor = System.Drawing.Color.Red;
            this.ddlMesFechaInicio.BackColor = System.Drawing.Color.Red;
            cadenaError = cadenaError + "La fecha de inicio ingresada tiene formato incorrecto" + "\\n";
        }
        return valido;
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Page.Response.Redirect("abm_designaciones.aspx");
    }
}
